module hip.hipaudio.backend.webaudio.clip; version(WebAssembly): import hip.hipaudio.audioclip; import hip.audio_decoding.audio; /** * This class is extremely linked/dependent on HipWebAudioDecoder. * It was done that way because WebAudio don't let the data be put inside * a buffer. * See the function `WasmDecodeAudio` on webaudio.js */ class HipWebAudioClip : HipAudioClip { HipWebAudioDecoder decoder; this(IHipAudioDecoder decoder, HipAudioClipHint hint) { super(decoder, hint); } override void setBufferData(HipAudioBuffer* buffer, ubyte[] data, uint size = 0) { buffer.webaudio = *cast(size_t*)data.ptr; //Only a handle to the real data. } ///Nothing to do override protected void onUpdateStream(ubyte[] data, uint decodedSize){} ///Wraps an XAudio buffer override protected HipAudioBufferWrapper createBuffer(ubyte[] data) { HipAudioBufferWrapper ret; // TODO: implement ret.buffer.webaudio = *cast(size_t*)data.ptr; return ret; } ///Calls XAudio2.9 specific buffer destroy override protected void destroyBuffer(HipAudioBuffer* buffer) { } }